window = global;
window.navigator = {
    appCodeName: "Mozilla",
    appName: "Netscape",
    appVersion: "5.0(windows NT 6.1;wow64)Applewebkit/537.36(KHML, like Gecko)Chrome/74.0.3729.169 safari/537.36",
    cookieEnabled: true,
    doNotTrack: null,
    hardwareConcurrency: 4,
    language: "zh-CN",
    languages: ["zh-CN", "zh"],
    maxTouchPoints: 0,
    onLine: true,
    platform: "Win32",
    product: "Gecko",
    productSub: "20030107",
    userAgent: "Mozilla/5.0 (windows NT 6.1;WOW64)Applewebkit/537.36(KHTML, likeGecko)chrome/74.0.3729.169 safari/537.36",
    vendor: "Google Inc",
    vendorSub: ""
};

!function() {
    var t, e = {
        preventDefaultEvent: function(t) {
            (t = window.event || t) && (t.preventDefault ? t.preventDefault() : t.returnValue = !1)
        },
        setCookie: function(t, e, n, o) {
            var i = t + "=" + escape(e);
            if (n) {
                var r = new Date;
                r.setTime(r.getTime() + n),
                    i += "; expires=" + r.toGMTString()
            }
            o && (i += "; domain=" + o),
                document.cookie = i
        },
        getCookie: function(t) {
            var e, n = new RegExp("(^| )" + t + "=([^;]*)(;|$)");
            return (e = document.cookie.match(n)) ? unescape(e[2]) : ""
        },
        deleteCookie: function(t) {
            e.setCookie(t, 1, -1e3)
        },
        getStringLen: function(t) {
            var e = t.match(/[^\x00-\xff]/gi);
            return t.length + (null == e ? 0 : e.length)
        },
        extend: function() {
            for (var t = arguments[0], e = 1; e < arguments.length; e++) {
                var n = arguments[e];
                if (n)
                    for (var o in n)
                        t[o] = n[o]
            }
            return t
        },
        bind: function(t, e) {
            return function() {
                return t.apply(e, arguments)
            }
        },
        objToQueryStr: function(t) {
            var e = [];
            for (var n in t)
                t.hasOwnProperty(n) && e.push(n + "=" + t[n]);
            return e.join("&")
        },
        jsonpGet: function(t, n, o) {
            if (o) {
                var i = "pprtjsonp" + e.guid();
                window[i] = o,
                    n.callback = i
            }
            t = t + "?" + this.objToQueryStr(n);
            var r = document.createElement("script");
            r.src = t,
                e.getRcycleEl().appendChild(r)
        },
        trim: function(t) {
            return t.replace(/^\s+/, "").replace(/\s+$/, "")
        },
        setData: function(t, e, n) {
            var o, i = e.split(".");
            return e ? (o = i.shift(),
                i.length > 0 ? (t[o] = t[o] || {},
                    this.setData(t[o], i.join("."), n)) : (t[e] = n,
                    t[e])) : null
        },
        getData: function(t, e) {
            var n, o = e.split(".");
            return e && t[n = o.shift()] ? o.length > 0 ? this.getData(t[n], o.join(".")) : t[e] : null
        },
        guid: function() {
            return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
        },
        on: window.dispatchEvent ? function(t, e, n, o) {
                return t ? (t.addEventListener(e, n, !!o),
                    n) : null
            }
            : function(t, e, n) {
                if (!t)
                    return null;
                function o(e) {
                    return n.call(t, e || window.event)
                }
                return t.attachEvent && t.attachEvent("on" + e, o),
                    o
            }
        ,
        hasClass: function(t, e) {
            if (1 === t.nodeType)
                return !!t.className && (" " + t.className + " ").indexOf(" " + e + " ") > -1
        },
        addClass: function(t, n) {
            return !1 === e.hasClass(t, n) && (t.className = e.trim(t.className + " " + n)),
                t
        },
        removeClass: function(t, n) {
            if (!0 === e.hasClass(t, n)) {
                var o = new RegExp("(\\s|^)" + n + "(\\s|$)");
                t.className = t.className.replace(o, " ")
            }
            return t
        },
        getCss: function(t, e) {
            if (t.style[e])
                return t.style[e];
            if (t.currentStyle)
                return t.currentStyle[e];
            if (document.defaultView && document.defaultView.getComputedStyle) {
                e = (e = e.replace(/([A-Z])/g, "-$1")).toLowerCase();
                var n = document.defaultView.getComputedStyle(t, "");
                return n && n.getPropertyValue(e)
            }
        },
        loadCss: function(t) {
            var e = document.createElement("link")
                , n = document.getElementsByTagName("head")[0];
            e.rel = "stylesheet",
                e.type = "text/css",
                e.href = t,
                n.appendChild(e)
        },
        setAttr: function(t, e, n) {
            t[e] = n
        },
        getAttr: function(t, e) {
            return t[e]
        },
        getBodyHeight: function() {
            return "BackCompat" == document.compatMode ? document.body.clientHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ? document.body.clientHeight : window.height
        },
        getBodyWidth: function() {
            return document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ? document.body.clientWidth : window.width
        },
        getOffset: function(t) {
            var e = 0
                , n = 0;
            if (t.offsetParent)
                do {
                    e += t.offsetLeft,
                        n += t.offsetTop
                } while (t = t.offsetParent);
            else
                e = t.offsetLeft,
                    n = t.offsetTop;
            return {
                left: e,
                top: n
            }
        },
        ArrDel: function(t, e) {
            return e < 0 ? t : t.slice(0, e).concat(t.slice(e + 1, t.length))
        },
        waitForBody: function(t) {
            document.body ? t() : setTimeout((function() {
                    e.waitForBody(t)
                }
            ), 50)
        }
    }, n = e.$ = function() {
        function t(t) {
            this.element = t
        }
        t.prototype.show = function() {
            if (this.element) {
                var t = e.getAttr(this.element, "pprtDisplay");
                null == t && ("none" === (t = e.getCss(this.element, "display")) && (t = "block"),
                    e.setAttr(this.element, "pprtDisplay", t)),
                    this.element.style.display = t
            }
            return this
        }
            ,
            t.prototype.hide = function() {
                if (this.element) {
                    var t = e.getCss(this.element, "display");
                    "none" === t && (t = "block"),
                        e.setAttr(this.element, "pprtDisplay", t),
                        this.element.style.display = "none"
                }
                return this
            }
            ,
            t.prototype.html = function() {
                var t = this.element;
                return arguments.length > 0 ? (t && (t.innerHTML = arguments[0]),
                    this) : t ? t.innerHTML : null
            }
            ,
            t.prototype.attr = function() {
                var t = this.element;
                return arguments.length > 1 ? (t && t.setAttribute(arguments[0], arguments[1]),
                    this) : 1 === arguments.length ? t ? t.getAttribute(arguments[0]) : null : void 0
            }
            ,
            t.prototype.on = function(t, n, o) {
                var i = this.element;
                function r(t) {
                    o = o || null;
                    var i = n.apply(o, arguments);
                    return !1 === i && e.preventDefaultEvent(t),
                        i
                }
                i && (i.attachEvent ? i.attachEvent("on" + t, r) : i.addEventListener(t, r, !0))
            }
        ;
        var n = /^<(\w+)[\s>](.*)<\/\1>$/i
            , o = "";
        return function(e, r) {
            var s;
            if (r && !r.tagName && (r = r.element),
            "object" === i(e))
                s = e;
            else if ("#" === e.charAt(0))
                s = document.getElementById(e.substr(1));
            else if ("." === e.charAt(0))
                s = function t(e, n) {
                    for (var o = e.childNodes, i = 0; i < o.length; i++) {
                        var r = o.item(i);
                        if (1 === r.nodeType) {
                            if (n.test(r.className))
                                return r;
                            var s = t(r, n);
                            if (s)
                                return s
                        }
                    }
                    return !1
                }(r || document, new RegExp("(^\\s*|\\s+)" + e.substr(1) + "(\\s+|\\s*$)"));
            else if (n.test(e)) {
                if (o.innerHTML = e,
                1 !== o.childNodes.length)
                    throw "only 1 element is allowed: " + e;
                for (s = o.firstChild; o.firstChild; )
                    o.removeChild(o.firstChild)
            }
            return new t(s)
        }
    }();
    e.getRcycleEl = function() {
        if (!e.rcycleEl) {
            var t = n('<div style="display:none;"  id="ue-component-rcycle"></div>');
            document.body.appendChild(t.element),
                e.rcycleEl = t.element
        }
        return e.rcycleEl
    }
        ,
        e.hexMd5 = function() {
            var t = 0;
            function e(t, e, n, o, i, r) {
                return s((a = s(s(e, t), s(o, r))) << (l = i) | a >>> 32 - l, n);
                var a, l
            }
            function n(t, n, o, i, r, s, a) {
                return e(n & o | ~n & i, t, n, r, s, a)
            }
            function o(t, n, o, i, r, s, a) {
                return e(n & i | o & ~i, t, n, r, s, a)
            }
            function i(t, n, o, i, r, s, a) {
                return e(n ^ o ^ i, t, n, r, s, a)
            }
            function r(t, n, o, i, r, s, a) {
                return e(o ^ (n | ~i), t, n, r, s, a)
            }
            function s(t, e) {
                var n = (65535 & t) + (65535 & e);
                return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n
            }
            return function(e) {
                return function(e) {
                    for (var n, o = t ? "0123456789ABCDEF" : "0123456789abcdef", i = "", r = 0; r < e.length; r++)
                        n = e.charCodeAt(r),
                            i += o.charAt(n >>> 4 & 15) + o.charAt(15 & n);
                    return i
                }(function(t) {
                    return function(t) {
                        for (var e = "", n = 0; n < 32 * t.length; n += 8)
                            e += String.fromCharCode(t[n >> 5] >>> n % 32 & 255);
                        return e
                    }(function(t, e) {
                        t[e >> 5] |= 128 << e % 32,
                            t[14 + (e + 64 >>> 9 << 4)] = e;
                        for (var a = 1732584193, l = -271733879, c = -1732584194, u = 271733878, p = 0; p < t.length; p += 16) {
                            var d = a
                                , f = l
                                , h = c
                                , m = u;
                            a = n(a, l, c, u, t[p + 0], 7, -680876936),
                                u = n(u, a, l, c, t[p + 1], 12, -389564586),
                                c = n(c, u, a, l, t[p + 2], 17, 606105819),
                                l = n(l, c, u, a, t[p + 3], 22, -1044525330),
                                a = n(a, l, c, u, t[p + 4], 7, -176418897),
                                u = n(u, a, l, c, t[p + 5], 12, 1200080426),
                                c = n(c, u, a, l, t[p + 6], 17, -1473231341),
                                l = n(l, c, u, a, t[p + 7], 22, -45705983),
                                a = n(a, l, c, u, t[p + 8], 7, 1770035416),
                                u = n(u, a, l, c, t[p + 9], 12, -1958414417),
                                c = n(c, u, a, l, t[p + 10], 17, -42063),
                                l = n(l, c, u, a, t[p + 11], 22, -1990404162),
                                a = n(a, l, c, u, t[p + 12], 7, 1804603682),
                                u = n(u, a, l, c, t[p + 13], 12, -40341101),
                                c = n(c, u, a, l, t[p + 14], 17, -1502002290),
                                l = n(l, c, u, a, t[p + 15], 22, 1236535329),
                                a = o(a, l, c, u, t[p + 1], 5, -165796510),
                                u = o(u, a, l, c, t[p + 6], 9, -1069501632),
                                c = o(c, u, a, l, t[p + 11], 14, 643717713),
                                l = o(l, c, u, a, t[p + 0], 20, -373897302),
                                a = o(a, l, c, u, t[p + 5], 5, -701558691),
                                u = o(u, a, l, c, t[p + 10], 9, 38016083),
                                c = o(c, u, a, l, t[p + 15], 14, -660478335),
                                l = o(l, c, u, a, t[p + 4], 20, -405537848),
                                a = o(a, l, c, u, t[p + 9], 5, 568446438),
                                u = o(u, a, l, c, t[p + 14], 9, -1019803690),
                                c = o(c, u, a, l, t[p + 3], 14, -187363961),
                                l = o(l, c, u, a, t[p + 8], 20, 1163531501),
                                a = o(a, l, c, u, t[p + 13], 5, -1444681467),
                                u = o(u, a, l, c, t[p + 2], 9, -51403784),
                                c = o(c, u, a, l, t[p + 7], 14, 1735328473),
                                l = o(l, c, u, a, t[p + 12], 20, -1926607734),
                                a = i(a, l, c, u, t[p + 5], 4, -378558),
                                u = i(u, a, l, c, t[p + 8], 11, -2022574463),
                                c = i(c, u, a, l, t[p + 11], 16, 1839030562),
                                l = i(l, c, u, a, t[p + 14], 23, -35309556),
                                a = i(a, l, c, u, t[p + 1], 4, -1530992060),
                                u = i(u, a, l, c, t[p + 4], 11, 1272893353),
                                c = i(c, u, a, l, t[p + 7], 16, -155497632),
                                l = i(l, c, u, a, t[p + 10], 23, -1094730640),
                                a = i(a, l, c, u, t[p + 13], 4, 681279174),
                                u = i(u, a, l, c, t[p + 0], 11, -358537222),
                                c = i(c, u, a, l, t[p + 3], 16, -722521979),
                                l = i(l, c, u, a, t[p + 6], 23, 76029189),
                                a = i(a, l, c, u, t[p + 9], 4, -640364487),
                                u = i(u, a, l, c, t[p + 12], 11, -421815835),
                                c = i(c, u, a, l, t[p + 15], 16, 530742520),
                                l = i(l, c, u, a, t[p + 2], 23, -995338651),
                                a = r(a, l, c, u, t[p + 0], 6, -198630844),
                                u = r(u, a, l, c, t[p + 7], 10, 1126891415),
                                c = r(c, u, a, l, t[p + 14], 15, -1416354905),
                                l = r(l, c, u, a, t[p + 5], 21, -57434055),
                                a = r(a, l, c, u, t[p + 12], 6, 1700485571),
                                u = r(u, a, l, c, t[p + 3], 10, -1894986606),
                                c = r(c, u, a, l, t[p + 10], 15, -1051523),
                                l = r(l, c, u, a, t[p + 1], 21, -2054922799),
                                a = r(a, l, c, u, t[p + 8], 6, 1873313359),
                                u = r(u, a, l, c, t[p + 15], 10, -30611744),
                                c = r(c, u, a, l, t[p + 6], 15, -1560198380),
                                l = r(l, c, u, a, t[p + 13], 21, 1309151649),
                                a = r(a, l, c, u, t[p + 4], 6, -145523070),
                                u = r(u, a, l, c, t[p + 11], 10, -1120210379),
                                c = r(c, u, a, l, t[p + 2], 15, 718787259),
                                l = r(l, c, u, a, t[p + 9], 21, -343485551),
                                a = s(a, d),
                                l = s(l, f),
                                c = s(c, h),
                                u = s(u, m)
                        }
                        return Array(a, l, c, u)
                    }(function(t) {
                        for (var e = Array(t.length >> 2), n = 0; n < e.length; n++)
                            e[n] = 0;
                        for (n = 0; n < 8 * t.length; n += 8)
                            e[n >> 5] |= (255 & t.charCodeAt(n / 8)) << n % 32;
                        return e
                    }(t), 8 * t.length))
                }(function(t) {
                    var e, n, o = "", i = -1;
                    for (; ++i < t.length; )
                        e = t.charCodeAt(i),
                            n = i + 1 < t.length ? t.charCodeAt(i + 1) : 0,
                        55296 <= e && e <= 56319 && 56320 <= n && n <= 57343 && (e = 65536 + ((1023 & e) << 10) + (1023 & n),
                            i++),
                            e <= 127 ? o += String.fromCharCode(e) : e <= 2047 ? o += String.fromCharCode(192 | e >>> 6 & 31, 128 | 63 & e) : e <= 65535 ? o += String.fromCharCode(224 | e >>> 12 & 15, 128 | e >>> 6 & 63, 128 | 63 & e) : e <= 2097151 && (o += String.fromCharCode(240 | e >>> 18 & 7, 128 | e >>> 12 & 63, 128 | e >>> 6 & 63, 128 | 63 & e));
                    return o
                }(e)))
            }
        }(),
        e.base64Decode = (t = new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1),
                function(e) {
                    return function(t) {
                        var e, n, o, i, r, s;
                        for (e = "",
                                 o = t.length,
                                 n = 0; n < o; )
                            switch ((i = t.charCodeAt(n++)) >> 4) {
                                case 0:
                                case 1:
                                case 2:
                                case 3:
                                case 4:
                                case 5:
                                case 6:
                                case 7:
                                    e += t.charAt(n - 1);
                                    break;
                                case 12:
                                case 13:
                                    r = t.charCodeAt(n++),
                                        e += String.fromCharCode((31 & i) << 6 | 63 & r);
                                    break;
                                case 14:
                                    r = t.charCodeAt(n++),
                                        s = t.charCodeAt(n++),
                                        e += String.fromCharCode((15 & i) << 12 | (63 & r) << 6 | (63 & s) << 0)
                            }
                        return e
                    }(function(e) {
                        var n, o, i, r, s, a, l;
                        for (a = e.length,
                                 s = 0,
                                 l = ""; s < a; ) {
                            do {
                                n = t[255 & e.charCodeAt(s++)]
                            } while (s < a && -1 == n);
                            if (-1 == n)
                                break;
                            do {
                                o = t[255 & e.charCodeAt(s++)]
                            } while (s < a && -1 == o);
                            if (-1 == o)
                                break;
                            l += String.fromCharCode(n << 2 | (48 & o) >> 4);
                            do {
                                if (61 == (i = 255 & e.charCodeAt(s++)))
                                    return l;
                                i = t[i]
                            } while (s < a && -1 == i);
                            if (-1 == i)
                                break;
                            l += String.fromCharCode((15 & o) << 4 | (60 & i) >> 2);
                            do {
                                if (61 == (r = 255 & e.charCodeAt(s++)))
                                    return l;
                                r = t[r]
                            } while (s < a && -1 == r);
                            if (-1 == r)
                                break;
                            l += String.fromCharCode((3 & i) << 6 | r)
                        }
                        return l
                    }(e))
                }
        ),
        e.Class = function() {
            var t = !1
                , e = /xyz/.test((function() {
                    xyz
                }
            )) ? /\bbase\b/ : /.*/;
            function n() {}
            return n.extend = function(o, i) {
                var r = this.prototype;
                t = !0;
                var s = new this;
                for (var a in t = !1,
                    o)
                    s[a] = "function" == typeof o[a] && "function" == typeof r[a] && e.test(o[a]) ? function(t, e) {
                        return function() {
                            var n = this.base;
                            this.base = r[t];
                            var o = e.apply(this, arguments);
                            return this.base = n,
                                o
                        }
                    }(a, o[a]) : o[a];
                var l = i || function() {
                        !t && this.init && this.init.apply(this, arguments)
                    }
                ;
                return l.prototype = s,
                    l.prototype.constructor = l,
                    l.extend = n.extend,
                    l
            }
                ,
                n
        }();
    var r = !0
        , s = e.Class.extend({
        init: function(t) {
            if (!r)
                throw new Error("core只允许实例化一次");
            r = !1,
                this.events = {
                    ready: [],
                    loginSuccess: [],
                    logoutSuccess: []
                },
                this._initing(t),
                this._inited()
        },
        _initing: function(t) {
            var n = Passport.ENUM.CROSSDOMAINACTION
                , o = this;
            this.setData("status", Passport.ENUM.STATUS.initing),
                this.option = e.extend({}, Passport.Core.defaultOption, t),
                this.option.domain = this.option.domain ? this.option.domain : this.getDomain(),
                this.option.appid = this.option.appid ? this.option.appid : this.getAppid(),
                this.option.currentUrl = this.option.currentUrl ? encodeURIComponent(this.option.currentUrl) : encodeURIComponent(location.href),
                this.setData("id", e.guid()),
                this.username = "",
                this.password = "",
                this.cookie = 0,
                this.parseCookie(),
                this.isLogined && 2 == e.getCookie(n.login + "_17173ppinfocrosscookie") ? e.waitForBody((function() {
                        o.allCrossDomain(Passport.ENUM.CROSSDOMAINACTION.login)
                    }
                )) : 2 == e.getCookie(n.logout + "_17173ppinfocrosscookie") && e.waitForBody((function() {
                        o.allCrossDomain(Passport.ENUM.CROSSDOMAINACTION.logout)
                    }
                ))
        },
        fireEvent: function(t, e, n) {
            for (var o = this.events[t] || [], i = o.length, r = 0; r < i; r++)
                (!n || n && !o[r].beenFired) && (o[r].call(this, e),
                    o[r].beenFired = !0)
        },
        on: function(t, e, n) {
            this.events[t] = this.events[t] || [],
            n && (e._cantOff = !0),
                this.events[t].push(e)
        },
        off: function(t, n) {
            var o, i = this.events[t];
            if (i)
                if (n) {
                    for (r = 0,
                             s = i.length; r < s; r++)
                        if (!n._cantOff && i[r] === n) {
                            o = r;
                            break
                        }
                    this.events[t] = e.ArrDel(this.events[t], o)
                } else
                    for (var r = 0, s = i.length; r < s; r++)
                        i[r]._cantOff || (this.events[t] = e.ArrDel(this.events[t], r))
        },
        _inited: function() {
            this.setData("status", Passport.ENUM.STATUS.inited)
        },
        setData: function(t, n) {
            e.setData(this, t, n),
                this._onSetData(t, n)
        },
        _onSetData: function() {},
        getData: function(t) {
            return e.getData(this, t)
        },
        gotoHref: function(t) {
            window.location = t
        },
        getAppid: function() {
            return "10086"
        },
        getDomain: function() {
            var t, e = (t = document.domain.split(".")).length;
            return e <= 2 ? document.domain : t[e - 2] + "." + t[e - 1]
        },
        allCrossDomain: function(t) {
            var o = this.loginMsg = this.option.protocol + "//" + this.option.crossDomainUrl + "?do=" + t + "&domain=" + this.option.domain
                , i = n('<iframe src="' + o + '" width="0" height="0" style="width:0;height:0;"></iframe>')
                , r = this;
            i.element.attachEvent ? i.element.attachEvent("onload", (function() {
                    r._onCrossDomained.call(r, t)
                }
            )) : i.element.onload = function() {
                r._onCrossDomained.call(r, t)
            }
                ,
                e.setCookie(t + "_17173ppinfocrosscookie", 2, 432e5, this.option.domain),
                e.getRcycleEl().appendChild(i.element)
        },
        _onCrossDomained: function(t) {
            e.setCookie(t + "_17173ppinfocrosscookie", 1, 432e5, this.option.domain),
            this.option.onCrossDomained && this.option.onCrossDomained.call(this)
        },
        login: function(t) {
            var n = this
                , o = Passport.ENUM.LOGINACTIONRESULT;
            t = e.extend({}, {
                domain: n.option.domain,
                appid: n.option.appid,
                currentUrl: encodeURIComponent(decodeURIComponent(n.option.currentUrl))
            }, t),
                this.username = e.trim(t.username),
                this.password = e.trim(t.password),
                this.saftPassword = e.trim(t.saftPassword),
                this.validcode = t.validcode,
                this.randStr = t.randStr,
                this.txAppId = t.txAppId,
                this._loginStart.call(this, t, (function(i) {
                        if (i.status) {
                            this.setData("status", Passport.ENUM.STATUS.logining),
                                this.fireEvent("loginStart");
                            var r = Passport.Core.SERVERVERSION;
                            if (this.option.client && "web" != this.option.client) {
                                var s = {
                                    v: r,
                                    username: encodeURIComponent(t.username),
                                    password: e.hexMd5(t.password),
                                    validcode: t.validcode,
                                    randStr: t.randStr,
                                    txAppId: t.txAppId,
                                    rememberme: void 0 === t.cookie ? n.option.cookie : t.cookie
                                };
                                this.saftPassword && (s.password = "",
                                    s.mobile_verify_code = this.saftPassword,
                                    s.dynamic = 1),
                                    e.jsonpGet(n.option.protocol + "//" + n.option.tokenUrl, s, (function(t) {
                                            if (n._logined.call(n, t),
                                            t.status == o.success) {
                                                var e = t.data
                                                    , i = "";
                                                for (var r in e)
                                                    i += r + "=" + e[r] + "&";
                                                n.setData("token", i),
                                                    n._loginSuccess.call(n, t)
                                            } else
                                                n._loginFailure.call(n, t)
                                        }
                                    ))
                            } else {
                                s = {
                                    v: r,
                                    username: encodeURIComponent(t.username),
                                    password: e.hexMd5(t.password),
                                    validcode: t.validcode,
                                    randStr: t.randStr,
                                    domain: t.domain,
                                    txAppId: t.txAppId,
                                    currentUrl: t.currentUrl,
                                    isbase64: -1,
                                    autoreg: 1,
                                    persistentcookie: void 0 === t.cookie ? n.option.cookie : t.cookie
                                };
                                this.saftPassword && (s.password = "",
                                    s.mobile_verify_code = this.saftPassword,
                                    s.dynamic = 1),
                                    e.jsonpGet(n.option.protocol + "//" + n.option.loginUrl, s, (function(t) {
                                            n._logined.call(n, t),
                                                t.status == o.success ? (n.parseCookie(),
                                                    n.allCrossDomain(Passport.ENUM.CROSSDOMAINACTION.login),
                                                    n._loginSuccess.call(n, t)) : n._loginFailure.call(n, t)
                                        }
                                    ))
                            }
                            n._checkLoginTimeout()
                        }
                    }
                ))
        },
        clearTimeout: function(t) {
            function e() {
                return t.apply(this, arguments)
            }
            return e.toString = function() {
                return t.toString()
            }
                ,
                e
        }((function() {
                clearTimeout(this.loginTimer),
                    clearTimeout(this.logoutTimer)
            }
        )),
        loginTimer: null,
        validateLoginInfo: function() {
            var t;
            for (var e in Passport.VALIDATES)
                if (!(t = Passport.VALIDATES[e].call(this)).status)
                    return this._loginFailure(t),
                        t;
            return {
                status: !0,
                msg: "成功"
            }
        },
        _checkLoginTimeout: function() {
            var t = this
                , e = Passport.ENUM.LOGINACTIONRESULT;
            t.clearTimeout(),
                t.loginTimer = setTimeout((function() {
                        t.status !== Passport.ENUM.STATUS.logined && (t.status = Passport.ENUM.STATUS.logined,
                            t._loginFailure.call(t, {
                                status: e.timeout,
                                msg: "登录超时"
                            }))
                    }
                ), t.option.timeout)
        },
        _loginStart: function(t, e) {
            var n = this.validateLoginInfo()
                , o = this;
            n.status ? l.call(this, (function(t) {
                    t.status || o._loginFailure(t),
                    e && e.call(o, t)
                }
            )) : e && e.call(this, n)
        },
        _logined: function() {
            this.clearTimeout(),
                this.setData("status", Passport.ENUM.STATUS.logined)
        },
        getLastUid: function() {
            var t = ""
                , n = e.getCookie("lastuser17173").split("|")[1];
            return n && (t = e.base64Decode(decodeURIComponent(n)).split("|")[0]),
                t
        },
        getLastAccount: function() {
            var t = ""
                , n = e.getCookie("lastdomain17173").split("|")[1];
            return n && (t = e.base64Decode(decodeURIComponent(n)).split("|")[0]),
                t
        },
        parseCookie: function() {
            var t, n, o, i, r = e.getCookie("ppinf17173");
            if (this.setData("cookieUserInfo", {}),
            r && ~r.indexOf("|")) {
                for (i = (o = (o = unescape(r).split("|")[3].replace(/-/g, "+")).replace(/_/g, "/")).length,
                         o += "====".substr(i % 4),
                         t = e.base64Decode(o).split("|"); t.length; )
                    2 === (n = t.shift().split(":")).length && this.setData("cookieUserInfo." + decodeURIComponent(n[0]), decodeURIComponent(n[1]));
                this.setData("isLogined", !0)
            } else
                this.setData("isLogined", !1)
        },
        _loginSuccess: function(t) {
            this.setData("username", ""),
                this.setData("password", ""),
                e.deleteCookie("lastnickname"),
            this.option.showwarn && e.setCookie("pprt_showloginwarning", 1),
                this.fireEvent("loginSuccess", t),
            this.option.loginRedirectUrl && this.gotoHref(this.option.loginRedirectUrl)
        },
        _loginFailure: function(t) {
            if (t && 12 === t.status) {
                var e = window.parent && window.parent.location ? window.parent.location : window.location;
                e.href = "//passport.17173.com/czpw/index?return_url=" + encodeURIComponent(e.href)
            }
            this.fireEvent("loginFailure", t)
        },
        logout: function(t, n) {
            t && e.preventDefaultEvent(t);
            var o = this
                , i = Passport.ENUM.LOGOUTACTIONRESULT;
            n = n || {},
            this._logoutStart() && (this.setData("status", Passport.ENUM.STATUS.logouting),
                this.fireEvent("logoutStart"),
                e.jsonpGet(o.option.protocol + "//" + o.option.logoutUrl, {
                    appid: n.appid || o.option.appid,
                    domain: n.domain || o.option.domain
                }, (function(t) {
                        o._logouted.call(o, t),
                            t.status == i.success ? (o.allCrossDomain(Passport.ENUM.CROSSDOMAINACTION.logout),
                                o._logoutSuccess.call(o, t)) : o._logoutFailure.call(o, t)
                    }
                )),
                o._checkLogoutTimeout())
        },
        logoutTimer: null,
        _checkLogoutTimeout: function() {
            var t = this
                , e = Passport.ENUM.LOGOUTACTIONRESULT;
            t.clearTimeout(),
                t.logoutTimer = setTimeout((function() {
                        t.status !== Passport.ENUM.STATUS.logouted && (t.status = Passport.ENUM.STATUS.logouted,
                            t._logoutFailure.call(t, {
                                status: e.timeout,
                                msg: ""
                            }))
                    }
                ), t.option.timeout)
        },
        _logoutStart: function() {
            return !0
        },
        _logouted: function() {
            this.clearTimeout(),
                this.setData("status", Passport.ENUM.STATUS.logouted)
        },
        _logoutSuccess: function(t) {
            this.cookieUserInfo = {},
                this.setData("isLogined", !1),
                this.fireEvent("logoutSuccess", t),
            this.option.logoutRedirectUrl && this.gotoHref(this.option.logoutRedirectUrl)
        },
        _logoutFailure: function(t) {
            this.fireEvent("logoutFailure", t)
        },
        receiveMsg: function(t) {
            var e = this;
            if (Passport.test)
                return null;
            if ("openPlatformBind" == t)
                e._logined.call(e),
                    e.parseCookie(),
                    e.isLogined ? (n = {
                        status: !0,
                        msg: "登录成功",
                        event: t
                    },
                        e.allCrossDomain(Passport.ENUM.CROSSDOMAINACTION.login),
                        e._loginSuccess.call(e, n),
                        Passport._openPlatformCrossDomain = !0) : (n = {
                        status: !1,
                        msg: "登录失败"
                    },
                        e._loginFailure.call(e, n));
            else if ("webClientLogin" == t) {
                e._logined.call(e);
                !function t() {
                    Passport.data("username") ? (n = {
                        status: !0,
                        msg: "登录成功"
                    },
                        e._loginSuccess.call(e, n)) : setTimeout(t, 600)
                }()
            } else if ("webClientLogout" == t)
                window.location.reload();
            else {
                var n = JSON.parse(t);
                e.fireEvent(n.ev, n)
            }
            return !1
        },
        data: function(t) {
            return this.cookieUserInfo && this.cookieUserInfo[t] ? this.cookieUserInfo[t] : ""
        },
        bindOpenPlatform: function(t, e) {
            this.fireEvent("bindOpenPlatform", t),
            t == Passport.OPEN_PLATFORMS.weixin && /MicroMessenger/i.test(navigator.userAgent) && (t = "mpweixin"),
                document.domain = this.option.domain,
                e = e || "开放平台";
            var n = window.parentHref || encodeURIComponent(window.location)
                , o = this.option.protocol + "//" + this.option.passportdomain + "/partner/authorize/name/" + t + "/domain/" + this.option.domain + "?referrer=" + n + "&client=" + this.option.client + "&callback=" + encodeURIComponent(this.option.callback);
            this.option.client && "web" != this.option.client ? window.location.href = o : window.open(o, e, "location=yes,left=200,top=100,width=750,height=500,resizable=yes,scrollbars=yes,scrollbars=1")
        },
        destory: function() {}
    });
    window.Passport = e.Class.extend({
        init: function() {}
    }),
        Passport.util = e,
        Passport.Core = s,
        Passport.getUserFace = function(t, n) {
            n = n || 0;
            for (var o = "", i = e.hexMd5(t), r = 0; r < 3; r++)
                o += "/" + i.substr(2 * r, 2);
            return "//i.17173cdn.com/avatar/YWxqaGBf" + (o += "/" + t) + ("/" + (0 === n ? "small.jpg" : 1 === n ? "normal.jpg" : "hd.jpg"))
        }
        ,
        Passport.getUserPortrait = function(t, e) {
            return t = t || Passport.data("uid"),
                Passport.getUserFace(t, e)
        }
    ;
    var a = null;
    Passport.getDomainList = function(t) {
        a ? t(a) : e.jsonpGet("//" + Passport.Core.defaultOption.passportdomain + "/site/getMailDomain", {}, (function(e) {
                e && 1 == e.status && e.data ? (a = e.data.slice(0, 6),
                    t(a)) : t()
            }
        ))
    }
        ,
        Passport.VALIDATES = {
            passworLength: function() {
                return this.password.length > 20 ? {
                    status: !1,
                    msg: "密码长度必须小于20位"
                } : {
                    status: !0,
                    msg: ""
                }
            },
            fieldEmpty: function() {
                return (e.trim(this.password) || e.trim(this.saftPassword)) && e.trim(this.username) ? {
                    status: !0,
                    msg: ""
                } : {
                    status: !1,
                    msg: "通行证和密码不能为空"
                }
            },
            usernameFormat: function() {
                return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(this.username) || /^1\d{10}$/.test(this.username) ? {
                    status: !0,
                    msg: ""
                } : {
                    status: !1,
                    msg: "通行证必须为手机号/ 邮箱格式"
                }
            }
        };
    var l = function(t) {
        var e, n = this;
        Passport.getDomainList((function(o) {
                for (e = 0; e < o.length; e++) {
                    if (/^1\d{10}$/.test(n.username) || n.username && /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(n.username))
                        return t({
                            status: !0,
                            msg: ""
                        })
                }
                return t({
                    status: !1,
                    msg: "暂不支持此域，请尝试一键登录"
                })
            }
        ))
    };
    Passport.Core.VERSION = "7.0.0",
        Passport.Core.SERVERVERSION = 2,
        Passport.Core.defaultOption = {
            cookie: 0,
            protocol: "",
            domain: null,
            appid: null,
            timeout: 15e3,
            loginRedirectUrl: "",
            logoutRedirectUrl: "",
            client: "",
            callback: "",
            showwarn: !0,
            domainList: ["qq.com", "sina.com", "163.com", "sohu.com", "126.com", "sina.cn", "gmail.com", "hotmail.com", "vip.sina.com", "139.com", "17173.com"]
        },
        Passport.instances = [],
        Passport.ENUM = {
            STATUS: {
                initing: 1,
                inited: 2,
                logining: 3,
                logined: 4,
                logouting: 5,
                logouted: 6
            },
            CROSSDOMAINACTION: {
                login: "login",
                logout: "logout"
            },
            LOGINACTIONRESULT: {
                success: 1,
                paramError: 2,
                userNameFormatError: 3,
                serverError: 4,
                passwordErrorTimes: 5,
                userNameUnfind: 6,
                userNameOrPassowrdWrong: 7,
                AccountUnActivation: 8,
                userNameEmpty: 9,
                passwordEmpty: 10,
                timeout: 11
            },
            LOGOUTACTIONRESULT: {
                success: 1,
                paramError: 2,
                failure: 3,
                timeout: 4
            }
        }
    window.e = e;
}();

console.log(window.e.hexMd5("123123"))

// "4297f44b13955235245b2497399d7a93"
// "4297f44b13955235245b2497399d7a93"